# 完成四大基础数据结构的CRUD操作

# list 列表的操作
# list-creat 增加

# append末尾添加元素
l_1 = []
print('id(l_1)：', id(l_1))
l_1.append('a')
print("用append末尾添加元素a:", l_1)
print('添加 a 元素之后的l的id为：', id(l_1))

# + 拼接两个列表
l_2 = ["z", 'y', 'x']
print("拼接两个列表:", l_1 + l_2)

# +=加法赋值
l_1 += ['b']
print("加法赋值：", l_1)

# * 和 *=
print("乘法赋值之前的l_1的id:", id(l_1))
l_1 = [l_1] * 5
print("乘法赋值结果:", l_1)
print("乘法赋值之后的l_1的id:", id(l_1))

# insert指定位置添加元素

print("l_2:", l_2)
l_2.insert(1, "w")
print("在l_2第一个元素后面增加w元素：", l_2)

# Retrieve(检索)
# 索引取值
print("索引取值l_2[2]", l_2[1])

# 切片
l_3 = list(range(100))
print(l_3)

print("l_3切片：", l_3[30:80:15])
print("去最后一个值:", l_3[-1])

# index
print(l_2.index('x'))

# 更新
# 索引赋值
l_2[1] = 'j'
print(l_2)

# 切片赋值
l_1[1:3] = 'f'
print('切片赋值后l_1:', l_1)

# 删除
l_1.pop()
print("删除后的l_1:", l_1)

# 排序
l_4 = [2,9,7,6,8]
l_4.sort()
print("为l_4排序sort:", l_4)

l_5 = sorted(l_4)
print("用sorted之后l_5排序:", l_5)

print('倒序', list(reversed(l_5)))


# 元组
t_1 = ('a', 'p', 'p', 'l', 'e')
print("元组索引取值", t_1[2])
print('元组index取值', t_1.index('e'))

print('切片：', t_1[1:3])

# 字典
# 键对值赋值
d_1 = {}
d_1['a'] = 1
print(d_1)

# 和并字典
d_2 = {"b": 2, 'c': 3}
d_1.update(d_2)
print(d_1)
#setdefault

d_1.setdefault('e', 0)
print(d_1)

# 键对值访问
print(d_1['e'])

print('用get取值：', d_1.get('c'))

print("返回所有值： ", d_1.values())

print("返回所有键对值：", d_1.items())

# 键对值赋值
d_1['a'] = 80
print("给a赋值80：", d_1)

# 更新
d_1.update({"b": 55, "c": 66})
print(d_1)

# 删除
d_1.pop('e')
print("删除键值为e的键值对：", d_1)

print("popitem()相当于随机返回一个item: ", d_1.popitem())

# 集合
s_1 = set()
print(s_1)
#add
s_1.add("p")
print("增加元素add：", s_1)
# uodate
s_1.update({'y', 't', 'h', 'o', 'n'})

print(s_1)

# in
print("a是否在s_1里面：", 'a' in s_1)
print("p是否在s_1里面：", 'p' in s_1)

# union合并
s_2 = {'x', 'w'}
print('合并后s_1为：', s_1.union(s_2))

# 删除

s_2.remove("x")
print("s_2用remove删除x元素后的结果：", s_2)


print("s_1为：", s_1)
s_1.discard("p")
print("s_1用discard删除x元素后的结果：", s_1)

# pop()
s_1.pop()
print("使用pop()删除后s_1的结果：", s_1)